package com.idenger.common.sms;

import java.util.HashMap;
import java.util.Set;

import com.idenger.common.config.Global;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.cloopen.rest.sdk.CCPRestSmsSDK;

public class TemplateSMS {
	/**
	 * 服务器地址
	 */
	public String serverIP;
	/**
	 * 服务器端口
	 */
	public String serverPort;
	/**
	 * 主账号
	 */
	public String accountId;
	/**
	 * 主账号令牌
	 */
	public String authToken;
	/**
	 * 应用id
	 */
	public String appId;
	
	/**
	 * 短信sdk
	 */
    CCPRestSmsSDK restAPI;

	/**
	 * 日志对象
	 */
	protected Logger logger = LoggerFactory.getLogger(getClass());

	/**
	 * 默认初始化
	 */
	private void init() {
		this.serverIP = Global.getServerIP();
		this.serverPort = Global.getServerPort();
		this.accountId = Global.getAccountId();
		this.authToken = Global.getAuthToken();
		this.appId = Global.getAppId();
		restAPI = new CCPRestSmsSDK();
	}

	public void prepare() {
		init();
		restAPI.init(this.serverIP, this.serverPort);
		restAPI.setAccount(this.accountId, this.authToken);
		restAPI.setAppId(this.appId);
	}
	
	/**
	 * 
	 * @param mobile 是要发送的手机号码，可以用逗号分隔，一次最多支持100个手机号
	 * @param templetId 模板ID，在平台上创建的短信模板的ID值；测试的时候可以使用系统的默认模板，id为1。
	 * @param parameterValues 要替换的内容数组
	 * @return bollean true表示成功、false表示失败
	 */
	public boolean sendTemplateSMS(String mobile, String templetId, String[] parameterValues) {
		HashMap<String, Object> smsResult;
		boolean isSuccess;
		smsResult = restAPI.sendTemplateSMS(mobile, templetId ,parameterValues);
		String statusCode = (String)smsResult.get("statusCode");
		if("000000".equals(statusCode)){
			isSuccess = true;
			//正常返回输出data包体信息（map）
			HashMap<String,Object> data = (HashMap<String, Object>) smsResult.get("data");
			Set<String> keySet = data.keySet();
			for(String key:keySet){
				Object object = data.get(key);
				logger.info("\n key = " + object + "\n");
			}
		}else{
			isSuccess = false;
			//异常返回输出错误码和错误信息
			logger.info("\n 错误码=" + smsResult.get("statusCode") +" 错误信息= "+smsResult.get("statusMsg") + "\n");
		}
		return isSuccess;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TemplateSMS templateSms = new TemplateSMS();
		templateSms.prepare();
		System.out.println(templateSms.serverIP);
		// boolean result = true;
		boolean result = templateSms.sendTemplateSMS("13671534658,13162720150", SmsConstants.SMS_TEMPLATE_ID_002,
				new String[] { "《光伏发电培训班》", "2017年9月1日开课,地点：黄浦区" });
		System.out.println(result);
	}

}
